Modern software applications often require large amounts of memory. In addition to being a significant part of the capital cost of any computing system, memory systems also incur significant operating costs (such as high energy costs) due to the memory operations.
There have been various efforts to reduce memory usage in computer systems. For example, some existing systems such as the ESX™ by VMWare™ detect for duplicate memory pages and share duplicate pages. Memory deduplication can be a difficult task since it is computationally expensive to scan memory and identify duplicated pages. Moreover, any change to the memory page, however small, results in a different, nonduplicated page that cannot be shared. Additionally, existing deduplicated memory systems tend to have large page sizes (e.g., 2 MB), thus reducing the likelihood of sharing.